package com.warm.pump.module.sys.service.impl;

import com.warm.pump.module.sys.bean.SysRoleDto;
import com.warm.pump.module.sys.bean.po.gen.SysRole;
import com.warm.pump.module.sys.dao.gen.SysRoleDao;
import com.warm.pump.module.sys.service.ISysRoleMenuService;
import com.warm.pump.module.sys.service.ISysRoleService;
import com.warm.pump.module.sys.service.ISysUserRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 角色实现类

 * @date 2016年9月18日 上午9:45:12
 */
@Service("sysRoleService")
public class SysRoleServiceImpl implements ISysRoleService {
	@Autowired
	private SysRoleDao sysRoleDao;
	@Autowired
	private ISysRoleMenuService sysRoleMenuService;
	@Autowired
	private ISysUserRoleService sysUserRoleService;

	/**
	 * 根据角色ID，查询角色
	 */
	public SysRole queryObject(Long roleId) {
		return sysRoleDao.selectByPrimaryKey(roleId);
	}

	/**
	 * 查询所有角色
	 */
	public List<SysRole> queryList(Map<String, Object> map) {
		return sysRoleDao.getListByMap(map);
	}

	/**
	 * 统计所有角色总数
	 */
	public int queryTotal(Map<String, Object> map) {
		return sysRoleDao.countTotalByMap(map);
	}

	/**
	 * 持久化角色
	 */
	@Transactional
	public void save(SysRoleDto role) {
		role.setCreateTime(new Date());
		sysRoleDao.insertSelective(role);

		// 保存角色与菜单关系
		sysRoleMenuService.saveOrUpdate(role.getRoleId(), role.getMenuIdList());
	}

	/**
	 * 更新角色
	 */
	@Transactional
	public void update(SysRoleDto role) {
		sysRoleDao.updateByPrimaryKeySelective(role);

		// 更新角色与菜单关系
		sysRoleMenuService.saveOrUpdate(role.getRoleId(), role.getMenuIdList());
	}

	/**
	 * 批量删除角色
	 */
	@Transactional
	public void deleteBatch(Long[] roleIds) {

		Map<String,Object> condMap = new HashMap<>();
		condMap.put("roleId_in",roleIds);
		sysRoleDao.deleteByMap(condMap);
	}
}
